[GitHub] Dependabot grouped version updates で semantic version level が利用可能になりました
こんにちは、CX 事業本部 Delivery 部の若槻です。
以前のエントリで Dependabot の Grouped version updates を紹介しました。
Grouped version updates を利用することにより、Dependabot version updates による Pull Request を任意のグループでまとめて作成することができます。(現在パブリックベータ)
そしてこのたびの Dependabot のアップデートで、セマンティックバージョニング(semver)ごとにグループを作成することができるようになりました。
試してみた
Dependabot の構成
ドキュメントによると、update-types
オプションでminor
,patch
およびmajor
を指定できるようです。
今回は、次のようにマイナーおよびパッチバージョンを対象としたグループを設定した Dependabot の構成を作成します。
update-types
で対象のセマンティックレベルを指定します。
version: 2 updates: - package-ecosystem: npm directory: / schedule: interval: daily groups: angular: patterns: - '*' update-types: - minor - patch
動作確認
古い依存関係を追加
最新バージョンよりメジャー、マイナーおよびパッチバージョンが古い依存関係を package.json に含めます。
{ "devDependencies": { "@types/node": "20.5.0", // -> 20.5.1 "vite": "3.2.5", // -> 4.4.9 "vitest": "0.34.1", // -> 0.34.2 "luxon": "3.3.0", // -> 3.4.0 } }
Pull Request の自動作成
変更を push すると、Dependabot により Pull Request が自動で作成されました。
Bump vite from 3.2.5 to 4.4.9
Bump the minor-and-patch group with 3 updates
Bump vite from 3.2.5 to 4.4.9
では、メジャーバージョンアップが単一の Pull Request として作成されています。
{ "devDependencies": { - "vite": "3.2.5", + "vite": "4.4.9", } }
一方で Grouped version updates の Pull Request であるBump the minor-and-patch group with 3 updates
では、マイナーおよびパッチのバージョンアップのみがグルーピングされています。
{ "devDependencies": { - "@types/node": "20.5.0", + "@types/node": "20.5.1", - "vitest": "0.34.1", + "vitest": "0.34.2", - "luxon": "3.3.0", + "luxon": "3.4.0" } }
update-types
オプションの動作を確認することができました。
metadata を確認してみる
ちなみに以前のエントリで試した方法で、GitHub Actions を利用して Dependabot の metadata を取得してみると、Bump the minor-and-patch group with 3 updates
をトリガーとしたワークフローでは次のような metadata が取得されました。
{ "updated-dependencies-json": "[{\"dependencyName\":\"@types/node\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-patch\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0},{\"dependencyName\":\"vitest\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-patch\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0},{\"dependencyName\":\"luxon\",\"dependencyType\":\"direct:development\",\"updateType\":\"version-update:semver-minor\",\"directory\":\"/\",\"packageEcosystem\":\"npm_and_yarn\",\"targetBranch\":\"main\",\"prevVersion\":\"\",\"newVersion\":\"\",\"compatScore\":0,\"maintainerChanges\":false,\"dependencyGroup\":\"minor-and-patch\",\"alertState\":\"\",\"ghsaId\":\"\",\"cvss\":0}]", "dependency-names": "@types/node, vitest, luxon", "dependency-type": "direct:development", "update-type": "version-update:semver-minor", "directory": "/", "package-ecosystem": "npm_and_yarn", "target-branch": "main", "previous-version": "", "new-version": "", "compatibility-score": "0", "maintainer-changes": "false", "dependency-group": "minor-and-patch", "alert-state": "", "ghsa-id": "", "cvss": "0" }
update-types
オプションを指定した場合でもそれに対応する metadata 情報は特に取得されませんでした。アップデートのセマンティックレベルによりワークフローの分岐を実装したい場合は、アップデート中の最大のセマンティックレベルが入るupdate-type
やグループ名が入るdependency-group
を利用することになりそうです。
おわりに
Dependabot grouped version updates で semantic version level が利用可能になったのでご紹介しました。
パブリックベータであるからか、Grouped version updates はどんどん新しい機能がアップデートで便利になっていっているので、今後も注目していきたいと思います。
以上